<?php

/**
 * Функция компилятора Smarty для передачи настроек системы в контекст шаблона.
 *
 * @param   string          $tag_attrs
 * @param   Smarty_Compiler $compiler
 * @return  string
 */
function smarty_compiler_config($tag_attrs, &$compiler)
{
    $params = $compiler->_parse_attrs($tag_attrs);

    // поскольку значения параметров используются как для runtime выполнения,
    // так и для компиляции шаблона, обрезаем кавычки сразу, и работаем с ними
    // в чистом виде
    foreach ($params as &$value)
    {
        $value = trim($value, '\'"');
    }

    if (!isset($params['module']))
    {
        $compiler->_syntax_error("config: missing 'module' parameter", E_USER_WARNING);
        return;
    }

    if (!isset($params['param']))
    {
        $compiler->_syntax_error("config: missing 'param' parameter", E_USER_WARNING);
        return;
    }

    $code = 'Kernel_Config::get("' . $params['module'] . '", "' . $params['param'] . '")';

    return isset($params['assign'])
        ? '$this->assign("' . $params['assign'] . '", ' . $code . ');'
        : 'echo ' . $code . ';';

    if (!isset($params['assign']))
    {
        $compiler->_syntax_error("config: missing 'assign' parameter", E_USER_WARNING);
        return;
    }
}
